/**
 * Looker  新闻整合系统
 * Author  :solosky
 * File    :AddModifierManager.java
 * Date    :May 14, 2009
 * Lisence : Apache License 2.0 
 */
package net.looker.monitor.modifier;

import net.looker.work.WorkerPoolFactory;

/**
 * 管理dispatcher
 * 实例化三个dipatcher,分别对应add,delete,update
 * 在checker检查出变化会将变化的新闻交给这个管理器，然后管理交给正真的管理器
 * @author solosky
 *
 */
public class DispatcherManager
{
	/**
	 * 新增分发器
	 */
	private static Dispatcher addDispatcher;
	
	/**
	 * 删除分发器
	 */
	private static Dispatcher deleteDispatcher;
	
	/**
	 * 更新分发器
	 */
	private static Dispatcher updateDispatcher;
	
	/**
	 * 初始化dispatcher
	 */
	static{
		//TODO 修改为从配置文件中读取
		addDispatcher    = new	Dispatcher(WorkerPoolFactory.get("looker"), 20);
		deleteDispatcher = new	Dispatcher(WorkerPoolFactory.get("looker"), 20);
		updateDispatcher = new	Dispatcher(WorkerPoolFactory.get("looker"), 20);
	}
	
	/**
	 * 添加新增更改器至新增分发器
	 * @param m
	 */
	public static void add(Modifier m)
	{
		addDispatcher.addModifier(m);
	}
	
	/**
	 * 新增删除更改器至删除分发器
	 * @param m
	 */
	public static void delete(Modifier m)
	{
		deleteDispatcher.addModifier(m);
	}
	
	/**
	 * 添加更新更改器至更新分发器
	 * @param m
	 */
	public static void update(Modifier m)
	{
		updateDispatcher.addModifier(m);
	}
	
	
	public static void stopDispatch()
	{
		addDispatcher.stopDispatch();
		deleteDispatcher.stopDispatch();
		updateDispatcher.stopDispatch();
	}
	
}
